package request

import "interview/pkg/utils"

// PageInfo 带分页信息的请求信息封装
type PageInfo struct {
	// PageSize 页面大小
	PageSize int `json:"pageSize"`
	// PageNum 当前页数
	PageNum int `json:"pageNum"`
}

// CommonReq 大多数场景的请求参数绑定
type CommonReq struct {
	Ids []uint `json:"ids" form:"ids"`
}

// UpdateIncrementalIdsReq 增量更新id集合结构体
type UpdateIncrementalIdsReq struct {
	// Create 需要新增的编号集合
	Create []uint `json:"create"`
	// Delete 需要删除的编号集合
	Delete []uint `json:"delete"`
}

// GetIncremental 获取增量
func (r *UpdateIncrementalIdsReq) GetIncremental(oldIds []uint) []uint {
	newIds := make([]uint, 0)
	for _, v := range oldIds {
		// 已删除数据不加入列表
		if !utils.Contains(r.Delete, v) {
			newIds = append(newIds, v)
		}
	}
	// 需要新增的数据进行合并
	return append(newIds, r.Create...)
}
